package iterator;

/**
 * 偷个懒, 自己大概学学, 先不总结了, 有点累
 * 参考: https://www.runoob.com/design-pattern/iterator-pattern.html
 *
 * 用于顺序访问集合对象的元素，不需要知道集合对象的底层表示。
 *
 * 意图：提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。
 *
 * 主要解决：不同的方式来遍历整个整合对象。
 *
 * 何时使用：遍历一个聚合对象。
 *
 * 如何解决：把在元素之间游走的责任交给迭代器，而不是聚合对象。
 *
 * 关键代码：定义接口：hasNext, next。
 *
 * 应用实例：JAVA 中的 iterator。
 */
public class IteratorPattern {

}

interface Iterator {
    public boolean hasNext();
    public Object next();
}

interface Container {
    public Iterator getInterator();
}

class NameRepository implements Container {
    public String[] names = {"Robert", "John", "Julie", "Lora"};

    @Override
    public Iterator getInterator() {
        return null;
    }

    private class NameIterator implements Iterator {
        int index;

        @Override
        public boolean hasNext() {
            if (index < names.length) {
                return true;
            }
            return false;
        }

        @Override
        public Object next() {
            if (this.hasNext()) {
                return names[index++];
            }
            return null;
        }
    }
}

